package main

//
//import (
//	"fmt"
//	"github.com/gordonklaus/portaudio"
//	"github.com/notedit/rtmp/av"
//	"github.com/notedit/rtmp/format/rtmp"
//	"net"
//	"os"
//	"os/signal"
//	"syscall"
//	"time"
//)
//
//func main() {
//	portaudio.Initialize()
//	defer portaudio.Terminate()
//
//	// 获取可用的音频设备列表
//	//devices, err := portaudio.Devices()
//	//if err != nil {
//	//	fmt.Printf("Error fetching audio devices: %v\n", err)
//	//	return
//	//}
//	//
//	//// 打印可用的音频输入设备
//	//fmt.Println("Available audio input devices:")
//	//for i, device := range devices {
//	//	if device.MaxInputChannels > 0 {
//	//		fmt.Printf("%d: %s\n", i+1, device.Name)
//	//	}
//	//}
//	//
//	//// 选择音频输入设备
//	//selectedDeviceIndex := 0 // 替换为你选择的设备的索引
//	//if selectedDeviceIndex < 0 || selectedDeviceIndex >= len(devices) {
//	//	fmt.Println("Invalid device index.")
//	//	return
//	//}
//	//
//	//selectedDevice := devices[selectedDeviceIndex]
//	//fmt.Printf("Selected audio input device: %s\n", selectedDevice.Name)
//
//	//替换为你的 RTMP 服务器地址和流名称
//	rtmpURL := "rtmp://139.159.149.4/live/liws-1"
//	//创建 RTMP 客户端
//	client := rtmp.NewClient()
//	rtmpConn, netConn, err := client.Dial(rtmpURL, rtmp.PrepareWriting)
//	if err != nil {
//		fmt.Printf("Error connecting to RTMP server: %v\n", err)
//		return
//	}
//	defer netConn.Close()
//
//	// 打开选定的音频输入设备
//	stream, err := portaudio.OpenDefaultStream(1, 0, float64(44100), 1024, func(in []byte) {
//		// 处理音频数据
//		// 在这里添加你的逻辑，比如将音频数据发送到 RTMP 服务器
//		// 以下是示例代码，使用 tail 库推送音频数据到 RTMP 服务器
//		pushToRTMP(in, rtmpConn, netConn)
//	})
//	if err != nil {
//		fmt.Printf("Error opening audio stream: %v\n", err)
//		return
//	}
//	defer stream.Close()
//
//	// 启动音频流
//	if err := stream.Start(); err != nil {
//		fmt.Printf("Error starting audio stream: %v\n", err)
//		return
//	}
//
//	// 等待程序终止
//	sig := make(chan os.Signal, 1)
//	signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM)
//	<-sig
//
//	// 停止音频流
//	if err := stream.Stop(); err != nil {
//		fmt.Printf("Error stopping audio stream: %v\n", err)
//		return
//	}
//}
//
//func pushToRTMP(audioData []byte, rtmpConn *rtmp.Conn, conn net.Conn) {
//
//	// 创建音频帧
//	//audioFrame := &rtmp.AudioFrame{
//	//	SoundFormat:   rtmp.SoundFormatAAC,
//	//	SoundRate:     rtmp.SoundRate44kHz,
//	//	SoundSize:     rtmp.SoundSize16Bit,
//	//	SoundType:     rtmp.SoundTypeStereo,
//	//	AACPacketType: rtmp.AACPacketTypeRaw,
//	//	AACFrame:      audioData,
//	//	Timestamp:     uint32(time.Now().UnixNano() / int64(time.Millisecond)),
//	//}
//
//	p := av.Packet{Type: av.AAC, Data: audioData, Time: time.Millisecond * 50}
//
//	//fmt.Println(p)
//	// 发送音频帧到 RTMP 服务器
//	err := rtmpConn.WritePacket(p)
//	if err != nil {
//		fmt.Printf("Error writing audio data to RTMP server: %v\n", err)
//	}
//
//}
